// @algorithm @lc id=91 lang=cpp 
// @title decode-ways


// @test("12")=2
// @test("226")=3
// @test("0")=0
// @test("06")=0
class Solution {
public:
    int numDecodings(string s) {
        int d0 = 1, d1 = 1, d2 = 0;
        for(int i=1; i<=s.size(); i++){
            d2 = 0;
            if(s[i-1] != '0')
                d2 += d1;
            if(1<i && s[i-2]!='0' && 10*(s[i-2]-'0')+s[i-1]-'0'<=26)
                d2 += d0;
            d0 = d1;
            d1 = d2;
        }
        return d2;
    }
};